package myself

/*
装饰模式（Decorator Pattern）是一种结构型设计模式，
它允许在不修改现有对象的情况下，动态地【向对象添加新的行为和责任】。
该模式通过将对象包装在装饰器对象中，以组合对象的方式来实现功能的增强。

原理解释：
装饰模式通过创建一个装饰器类，该类实现了与被装饰对象相同的接口，并持有一个被装饰对象的引用。
装饰器类在调用被装饰对象的方法之前或之后，执行额外的行为，从而扩展了被装饰对象的功能。这种方式使得可以在运行时动态地添加、移除或更改对象的功能。

底层结构图：
下面是装饰模式的经典结构图：
                +------------------+
                |   Component      |
                +------------------+
                |   operation()    |
                +------------------+
                       /        \
                      /          \
            +----------------+  +----------------+
            |  Concrete      |  |  Concrete      |
            |  Component     |  |  Component     |
            +----------------+  +----------------+
            |  operation()   |  |  operation()   |
            +----------------+  +----------------+
                    /                   \
                   /                     \
         +----------------+    +----------------+
         |   Decorator    |    |   Decorator    |
         +----------------+    +----------------+
         |   component    |    |   component    |
         +----------------+    +----------------+
         |  operation()   |    |  operation()   |
         +----------------+    +----------------+

在上述结构图中，Component 是定义了基本操作的抽象类或接口。Concrete Component 是具体的实现类，提供了基本的功能。
Decorator 是装饰器的抽象类，它也实现了 Component 接口，并持有一个 Component 对象的引用。Concrete Decorator 是具体的装饰器实现类，通过扩展装饰器的功能来增强被装饰对象。

*/
